#include <lvgl.h>
#include <TFT_eSPI.h>
//lv_conf.h    文件里使用tft库打开， 使用之前配置好  tft库  使用的屏幕，以及SPI相关引脚

#include"ui.h"

#include"my_indev.h"


#define BUFF_SIZE 240 * 10 //lvgl屏幕初始化定义创建缓冲区大小




/*

//旋转编码器的回调函数
static void encoder_read(lv_indev_t * indev, lv_indev_data_t*data){
  data->enc_diff = 1;      //enc_get_new_moves();//实现返回1或-1代表左转还是右转

   if(digitalRead(9)==LOW){
    delay(100);
    if(digitalRead(9)==LOW){data->state = LV_INDEV_STATE_PRESSED;} 
  }
  else data->state = LV_INDEV_STATE_RELEASED;

  Serial.println("回调");

  //if(enc_pressed()) data->state = LV_INDEV_STATE_PRESSED;    //函数enc_pressed()返回真代表按下按钮
  //else data->state = LV_INDEV_STATE_RELEASED;
}

*/


void setup() {
  // put your setup code here, to run once:

Serial.begin(9600);

//   LVGL 相关处理

  //Frame buffers
  /*静�?�或全局缓冲区�?�第二个缓冲区是可�?�的*/
  static lv_color_t buf_1[BUFF_SIZE]; //TODO: 选择�?????个缓冲区大小�????? DISPLAY_WIDTH * 10是一个建议�??
  static lv_color_t buf_2[BUFF_SIZE];
  //初始化LVGL 屏幕 
  lv_init();
  lv_display_t * disp;
  disp = lv_tft_espi_create(240, 240, buf_1, BUFF_SIZE);//屏幕宽，高，缓冲区，缓冲区大小
  //lv_display_set_rotation(disp, 0);


  lv_port_indev_init();//输入设备初始化
	
  //创建旋转编码器为输入设备
  /*Register at least one display before you register any input devices*/
  static lv_indev_t * indev = lv_indev_create();
  lv_indev_set_type(indev, LV_INDEV_TYPE_ENCODER);   /*See below.*/
  lv_indev_set_read_cb(indev, encoder_read);  /*See below.*/  //绑定输入设备的回调函数
  lv_indev_read(indev);//代码读取输入状态
  /* 创建group 后面将控件绑定到组即绑定到输入设备 */
  lv_group_t * group = lv_group_create();
  lv_indev_set_group(indev, group);

//LVGL  界面函数  开始

lv_example_get_started_2();

//LVGL界面函数   结束

lv_tick_set_cb(millis);    //Arduino告知lvgl自启动以来过去了多少时间，很重要必须有，这样才能正常运行
Serial.println("ALLisOK");


}

void loop() {
  // put your main code here, to run repeatedly:

   lv_timer_handler(); 
   delay(5);
   

}
